package com.sg.controller.bff;

import com.sg.service.biz.bff.FinanceService;
import com.sg.dto.biz.bff.req.*;
import com.sg.dto.biz.bff.res.*;
import com.sg.common.ro.OkrResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
//import com.wicket.okrfinance.integration.dto.AddAccountSubjectRespDto;
//import com.wicket.okrfinance.integration.dto.AddAccountSubjectReqDto;
//import com.wicket.okrfinance.integration.dto.QueryAccountSubjectListRespDto;
//import com.wicket.okrfinance.integration.dto.QueryAccountSubjectListReqDto;
//import com.wicket.okrfinance.integration.dto.QueryAccountSubjectDetailRespDto;
//import com.wicket.okrfinance.integration.dto.QueryAccountSubjectDetailReqDto;

/**
 * @author ：
 * @version 1.0
 * @date ：
 */
@Api(value = "Finance", tags = {"Finance"})
@RestController
// @RequestMapping("/oms/finance/")
public class FinanceController {

    @Autowired
    FinanceService financeService;

    /**
     * B7查规划使用预算资金来源列表(边界)
     * gen by moon at 11/7/2023, 7:29:29 PM
     */
    @PostMapping("/oms/finance/queryPlanUseBudgetAccountCapitalSourceListBorder")
    @ApiOperation(value = "B7查规划使用预算资金来源列表(边界)", response = OkrResult.class)
    public OkrResult<BffQueryPlanUseBudgetAccountCapitalSourceListBorderRespDto> queryPlanUseBudgetAccountCapitalSourceListBorder(@RequestBody(required = false) @Validated BffQueryPlanUseBudgetAccountCapitalSourceListBorderReqDto reqDTO) {
        return OkrResult.success(financeService.queryPlanUseBudgetAccountCapitalSourceListBorder(reqDTO));
    }

    /**
     * B7查财务资金来源列表(边界)
     * gen by moon at 11/7/2023, 7:47:07 PM
     */
    @PostMapping("/oms/finance/queryAccountCapitalSourceListBorder")
    @ApiOperation(value = "B7查财务资金来源列表(边界)", response = OkrResult.class)
    public OkrResult<BffQueryAccountCapitalSourceListBorderRespDto> queryAccountCapitalSourceListBorder(@RequestBody(required = false) @Validated BffQueryAccountCapitalSourceListBorderReqDto reqDTO) {
        return OkrResult.success(financeService.queryAccountCapitalSourceListBorder(reqDTO));
    }

    /**
     * B7新增财务科目(管理)
     * gen by moon at 11/24/2023, 1:07:48 AM
     */
    @PostMapping("/oms/mgt/finance/addAccountSubject")
    @ApiOperation(value = "B7新增财务科目(管理)", response = OkrResult.class)
    public OkrResult<BffAddAccountSubjectRespDto> addAccountSubject(@RequestBody(required = false) @Validated BffAddAccountSubjectReqDto reqDTO) {
        return OkrResult.success(financeService.addAccountSubject(reqDTO));
    }

    /**
     * B7查财务科目列表(管理)
     * gen by moon at 11/24/2023, 1:07:57 AM
     */
    @PostMapping("/oms/mgt/finance/queryAccountSubjectList")
    @ApiOperation(value = "B7查财务科目列表(管理)", response = OkrResult.class)
    public OkrResult<BffQueryAccountSubjectListRespDto> queryAccountSubjectList(@RequestBody(required = false) @Validated BffQueryAccountSubjectListReqDto reqDTO) {
        return OkrResult.success(financeService.queryAccountSubjectList(reqDTO));
    }

    /**
     * B7查询财务科目详情(管理)
     * gen by moon at 11/24/2023, 1:08:04 AM
     */
    @PostMapping("/oms/mgt/finance/queryAccountSubjectDetail")
    @ApiOperation(value = "B7查询财务科目详情(管理)", response = OkrResult.class)
    public OkrResult<BffQueryAccountSubjectDetailRespDto> queryAccountSubjectDetail(@RequestBody(required = false) @Validated BffQueryAccountSubjectDetailReqDto reqDTO) {
        return OkrResult.success(financeService.queryAccountSubjectDetail(reqDTO));
    }

    /**
     * B7新增财务资金来源(管理)
     * gen by moon at 12/1/2023, 3:43:05 AM
     */
    @PostMapping("/oms/mgt/finance/addAccountCapitalSource")
    @ApiOperation(value = "B7新增财务资金来源(管理)", response = OkrResult.class)
    public OkrResult<BffAddAccountCapitalSourceRespDto> addAccountCapitalSource(@RequestBody(required = false) @Validated BffAddAccountCapitalSourceReqDto reqDTO) {
        return OkrResult.success(financeService.addAccountCapitalSource(reqDTO));
    }

    /**
     * B3执行目标预算设置
     * gen by moon at 2/4/2024, 2:06:25 AM
     */
    @PostMapping("/oms/finance/implementTargetBudgetSet")
    @ApiOperation(value = "B3执行目标预算设置", response = OkrResult.class)
    public OkrResult<BffImplementTargetBudgetSetRespDto> implementTargetBudgetSet(@RequestBody(required = false) @Validated BffImplementTargetBudgetSetReqDto reqDTO) {
        return OkrResult.success(financeService.implementTargetBudgetSet(reqDTO));
    }

    /**
     * B3查询目标内容父周期预算设置详情(管理)
     * gen by moon at 2/4/2024, 11:36:03 PM
     */
    @PostMapping("/oms/mgt/finance/queryTargetParentCycleBudgetSetDetail")
    @ApiOperation(value = "B3查询目标内容父周期预算设置详情(管理)", response = OkrResult.class)
    public OkrResult<BffQueryTargetParentCycleBudgetSetDetailRespDto> queryTargetParentCycleBudgetSetDetail(@RequestBody(required = false) @Validated BffQueryTargetParentCycleBudgetSetDetailReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetParentCycleBudgetSetDetail(reqDTO));
    }

    /**
     * B3查询目标子周期及来源预算设置列表(管理)
     * gen by moon at 2/5/2024, 4:20:56 PM
     */
    @PostMapping("/oms/mgt/finance/queryTargetCycleAndSourceBudgetSetList")
    @ApiOperation(value = "B3查询目标子周期及来源预算设置列表(管理)", response = OkrResult.class)
    public OkrResult<BffQueryTargetCycleAndSourceBudgetSetListRespDto> queryTargetCycleAndSourceBudgetSetList(@RequestBody(required = false) @Validated BffQueryTargetCycleAndSourceBudgetSetListReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetCycleAndSourceBudgetSetList(reqDTO));
    }

    /**
     * B3查询目标周期预算设置资金来源列表(管理)
     * gen by moon at 2/5/2024, 9:17:26 PM
     */
    @PostMapping("/oms/mgt/finance/queryTargetCycleBudgetSetSourceList")
    @ApiOperation(value = "B3查询目标周期预算设置资金来源列表(管理)", response = OkrResult.class)
    public OkrResult<BffQueryTargetCycleBudgetSetSourceListRespDto> queryTargetCycleBudgetSetSourceList(@RequestBody(required = false) @Validated BffQueryTargetCycleBudgetSetSourceListReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetCycleBudgetSetSourceList(reqDTO));
    }

    /**
     * B3获取目标内容加OR减预算资金来源(管理)
     * gen by moon at 2/5/2024, 9:17:34 PM
     */
    @PostMapping("/oms/mgt/finance/obtainTargetContentAddOrSubBudgetSource")
    @ApiOperation(value = "B3获取目标内容加OR减预算资金来源(管理)", response = OkrResult.class)
    public OkrResult<BffObtainTargetContentAddOrSubBudgetSourceRespDto> obtainTargetContentAddOrSubBudgetSource(@RequestBody(required = false) @Validated BffObtainTargetContentAddOrSubBudgetSourceReqDto reqDTO) {
        return OkrResult.success(financeService.obtainTargetContentAddOrSubBudgetSource(reqDTO));
    }

    /**
     * B3执行开启或关闭目标预算(管理)
     * gen by moon at 2/19/2024, 7:46:32 PM
     */
    @PostMapping("/oms/mgt/finance/implementOpenOrCloseTargetBudget")
    @ApiOperation(value = "B3执行开启或关闭目标预算(管理)", response = OkrResult.class)
    public OkrResult<BffImplementOpenOrCloseTargetBudgetRespDto> implementOpenOrCloseTargetBudget(@RequestBody(required = false) @Validated BffImplementOpenOrCloseTargetBudgetReqDto reqDTO) {
        return OkrResult.success(financeService.implementOpenOrCloseTargetBudget(reqDTO));
    }

    /**
     * B3查询目标内容预算子周期列表
     * gen by moon at 2/25/2024, 12:12:12 AM
     */
    @PostMapping("/oms/finance/queryTargetContentBudgetSubCycleList")
    @ApiOperation(value = "B3查询目标内容预算子周期列表", response = OkrResult.class)
    public OkrResult<BffQueryTargetContentBudgetSubCycleListRespDto> queryTargetContentBudgetSubCycleList(@RequestBody(required = false) @Validated BffQueryTargetContentBudgetSubCycleListReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetContentBudgetSubCycleList(reqDTO));
    }

    /**
     * B3查询目标内容预算设置状态(管理)
     * gen by moon at 2/25/2024, 11:36:29 AM
     */
    @PostMapping("/oms/mgt/finance/queryTargetContentBudgetStateDetail")
    @ApiOperation(value = "B3查询目标内容预算设置状态(管理)", response = OkrResult.class)
    public OkrResult<BffQueryTargetContentBudgetStateDetailRespDto> queryTargetContentBudgetStateDetail(@RequestBody(required = false) @Validated BffQueryTargetContentBudgetStateDetailReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetContentBudgetStateDetail(reqDTO));
    }

    /**
     * B7执行清空资金来源预算设置(管理)
     * gen by moon at 2/27/2024, 10:51:01 PM
     */
    @PostMapping("/oms/mgt/finance/implementClearBudgetSourceSet")
    @ApiOperation(value = "B7执行清空资金来源预算设置(管理)", response = OkrResult.class)
    public OkrResult<BffImplementClearBudgetSourceSetRespDto> implementClearBudgetSourceSet(@RequestBody(required = false) @Validated BffImplementClearBudgetSourceSetReqDto reqDTO) {
        return OkrResult.success(financeService.implementClearBudgetSourceSet(reqDTO));
    }

    /**
     * B3执行目标周期预算设置资金来源(管理)
     * gen by moon at 2/28/2024, 1:23:31 AM
     */
    @PostMapping("/oms/mgt/finance/implementTargetCycleBudgetSetSource")
    @ApiOperation(value = "B3执行目标周期预算设置资金来源(管理)", response = OkrResult.class)
    public OkrResult<BffImplementTargetCycleBudgetSetSourceRespDto> implementTargetCycleBudgetSetSource(@RequestBody(required = false) @Validated BffImplementTargetCycleBudgetSetSourceReqDto reqDTO) {
        return OkrResult.success(financeService.implementTargetCycleBudgetSetSource(reqDTO));
    }

    /**
     * B3查询目标内容资金来源预算设置列表(管理)
     * gen by moon at 2/28/2024, 12:39:54 PM
     */
    @PostMapping("/oms/mgt/finance/queryTargetConBudgetSourceSetList")
    @ApiOperation(value = "B3查询目标内容资金来源预算设置列表(管理)", response = OkrResult.class)
    public OkrResult<BffQueryTargetConBudgetSourceSetListRespDto> queryTargetConBudgetSourceSetList(@RequestBody(required = false) @Validated BffQueryTargetConBudgetSourceSetListReqDto reqDTO) {
        return OkrResult.success(financeService.queryTargetConBudgetSourceSetList(reqDTO));
    }
}
